﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace RAD.LightOne
{
    #region Documentation
    /// <summary>
    /// Classe que cria uma forma de acesso direto a todos os campos de um objeto intermediário.
    /// Cria ponteiros diretos para n ítens de n coleções que formem um InternalObject.
    /// </summary>
    #endregion
    internal sealed class DirectFieldMapper
    {
        #region Fields

        private Dictionary<string,Field> fields;
        #endregion

        #region Properties
        [System.Runtime.CompilerServices.IndexerName("GetItem")]
        public Field this[string name]
        {
            get
            {
                    return fields[name];
            }
        }

        #endregion 

        #region Constructors

        public DirectFieldMapper(InternalObj toMaping)
        {
            this.fields = new Dictionary<string,Field>();

            foreach (Table tItem in toMaping)
            {
                foreach (Field fItem in tItem)
                {
                    this.fields.Add(fItem.Name, fItem);
                }
            }

        }

        #endregion
    }
}
